package com.example.listviewtest;

import android.os.Bundle;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
/*
* 复合按钮，抽象类
* CompoundButton
* 包括派生类：复选框(Checkout)、单选按钮(RadioButton)、开关按钮(Switch)
* CompoundButton在布局文件中主要使用下面两个属性：
*   checked:指定按钮的勾选状态，true表示勾选，false表示勾选。默认未勾选
*   button:指定左侧勾选图标的图形。如果不指定就使用系统的默认图标。
*
* CompoundButton在代码中可使用下列4种方法进行设置：
*   setChecked:设置按钮的勾选状态。
*   setButtonDrawable:设置左侧勾选图标的图形。
*   setOnCheckedChangeListener:设置勾选状态变化的监听器。
*   isChecked:判断按钮是否勾选。
* */

public class CheckboxActivity extends AppCompatActivity{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_checkbox);
        CheckBox ck_system = findViewById(R.id.ck_system);
        // 设置勾选监听器，一旦用户点击复选框，就触发监听器的onCheckedChange方法
        ck_system.setOnCheckedChangeListener(new CheckListener());
    }

    // 定义一个勾选监听器，它实现了接口CompoundButton.OnCheckedChangeListener
    private class CheckListener implements CompoundButton.OnCheckedChangeListener{
        // 在用户点击复选框时触发
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            String desc = String.format("您勾选了控件%d，状态为%b", buttonView.getId(), isChecked);
            Toast.makeText(CheckboxActivity.this, desc, Toast.LENGTH_LONG).show();
        }
    }
}
